

#ifndef CardPrivate_h__
#define CardPrivate_h__

#include "CardDefine.h"
#include "Contactless/WCI.h"
// 


struct CardTag 
{
	const void* ops;
	WCI* wci;
	void* pdata;
	unsigned char type;
	unsigned char state;
};

struct CpuCardOpsTag {
	int(*probe)(Card_T*);
	int(*activate)(Card_T*);
	int(*deactivate)(Card_T*);
	int(*exchange)(Card_T*, unsigned char*, unsigned int, unsigned char*, unsigned int*);
	int(*setup)(Card_T*, uint8_t cid, uint8_t fsdi, void*param, uint8_t ats[]);
	int(*teardown)(Card_T*);
	int(*check)(Card_T*);
	int(*control)(Card_T*, unsigned char, unsigned char*, unsigned int, unsigned char*, unsigned int*);
};

struct CardFactoryTag
{
	void(*init)(Card_T*, WCI*, void*);
	Card_T* (*create)(WCI*);
	void(*destroy)(Card_T*);
};


#endif // CardPrivate_h__
